package com.yunyao.dao.model;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yunyao.common.web.util.ConvertUtil;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 收款合同发票
 * </p>
 *
 * @author xingjishuai
 * @since 2024-07-02
 */
@Getter
@Setter
@TableName("bamu_payment_contract_invoice")
public class BamuPaymentContractInvoice {

    /**
     * 主键
     */
    private String id;

    /**
     * 收款ID
     */
    private String receiveId;

    /**
     * 合同ID
     */
    private String contractId;

    /**
     * 开票日期
     */
    private Date invoiceDate;

    /**
     * 开票金额
     */
    private BigDecimal invoicePrice;

    /**
     * 发票号码
     */
    private String invoiceNo;

    /**
     * 发票代码
     */
    private String invoiceCode;

    /**
     * 收款状态
     */
    private String receiveStatus;

    /**
     * 合同预收款金额
     */
    private BigDecimal contractPrePrice;

    /**
     * 订单预收款金额
     */
    private BigDecimal orderPrePrice;

    /**
     * 本次收款金额
     */
    private BigDecimal prePrice;

    /**
     * 应收已收款
     */
    private BigDecimal receivePrice;

    /**
     * 应收未收款
     */
    private BigDecimal noReceivePrice;

    /**
     * 应付已付款
     */
    private BigDecimal paymentPrice;

    /**
     * 应付未付款
     */
    private BigDecimal noPaymentPrice;

    /**
     * 状态
     */
    @TableField("`status`")
    private Integer status;

    /**
     * 删除标识
     */
    private Integer isDeleted;

    /**
     * 创建人
     */
    private String createdBy;

    /**
     * 创建部门
     */
    private String createDept;

    /**
     * 创建时间
     */
    private Date createdAt;

    /**
     * 修改人
     */
    private String updatedBy;

    /**
     * 修改时间
     */
    private Date updatedAt;

    /**
     * 租户ID
     */
    @TableField(value = "tenant_id", fill = FieldFill.INSERT)
    private String tenantId;

    /**
     * 流程状态
     */
    private String auditStatus;

    /**
     * 流程实例ID
     */
    private String processInstanceId;

    /**
     * 流程设计模板信息ID
     */
    private String modelSchemeInfoId;

    /**
     * 流程部署ID
     */
    private String deploymentId;

    /**
     * 流程版本
     */
    private String processVersion;

    /**
     * 流程ID
     */
    private String invoiceId;

    /**
     * 合同发票
     */
    private String invoiceFile = "[]";

    /**
     * 结算单附件
     */
    private String settlementFile = "[]";

    /**
     * 绑定的发票金额
     */
    private BigDecimal bindInvoicePrice;

    /**
     * 发票ID
     */
    private String invoiceBindId;

    public void setInvoiceFile(String invoiceFile) {
        if (ConvertUtil.isValidNotEmptyJson(invoiceFile)) {
            this.invoiceFile = invoiceFile;
        }
    }

    public void setSettlementFile(String settlementFile) {
        if (ConvertUtil.isValidNotEmptyJson(settlementFile)) {
            this.settlementFile = settlementFile;
        }
    }
}
